const express = require("express")
const router = express.Router()
const shareDB = require("../../../db/share")
const {join} = require("path")
const multer = require("multer")
const path = require("path")
const fs = require("fs")
// 权限鉴别
router.use((req,res,next)=>{
  if(!req.session.userInfo.allowUpdate){
    return res.send({
      code:15,
      mes:"您没有修改权限，请联系超级管理员进行添加"
    })
  }
  next()
})


// 上传md文件
let mdUpload = multer({
  storage:multer.diskStorage({
    // 文件存储的目录
    destination(req,file,cb){
      cb(null,join(__dirname,"../../../static/share/md"))
    },
    // 文件的名字
    filename(req,file,cb){
      let name = req.session.userInfo._id
      let ext = path.extname(file.originalname)
      req.coverFile = "share"+name+Date.now()+ext
      cb(null,req.coverFile)  //名字
    }
  })
}).single("file") //name名字 elemetUI默认为file

// 上传cover文件
let coverUpload = multer({
  storage:multer.diskStorage({
    // 文件存储的目录
    destination(req,file,cb){
      cb(null,join(__dirname,"../../../static/share/cover"))
    },
    // 文件的名字
    filename(req,file,cb){
      let name = req.session.userInfo._id
      let ext = path.extname(file.originalname)
      req.coverFile = "share"+name+Date.now()+ext
      cb(null,req.coverFile)  //名字
    }
  })
}).single("file") //name名字 elemetUI默认为file


// 上传md文件
router.post("/md",async(req,res)=>{
  try {
    mdUpload(req,res,async err=>{
      let id = req.body._id
      if(err){
        return res.send({
          code:8,
          mes:"md文件上传失败,请刷新后重试"
        })
      }  
      // 检测该分享否存在
      let doc = await shareDB.findById(id)
      if(!doc){
        return res.send({
          code:17,
          mes:"该文章已被删除，请刷新后重试"
        })
      }
      // 删除旧的文件
      fs.rm(join(__dirname,"../../../static"+doc.md),
      {recursive:true},err=>{
        if(err) return
      })
      // 修改数据库
      await shareDB.findByIdAndUpdate(id,{
        md:"/share/md/"+req.coverFile,
        mtime:Date.now()
      })
      res.send({
        code:0,
        mes:"md文件更新成功"
      }) 
    }) 
  } catch (error) {
    console.log(error)
    res.send({
      code:5,
      mes:"服务器异常，请稍后再试"
    })
  }
})

// 上传cover文件
router.post("/cover",async(req,res)=>{
  try {
    coverUpload(req,res,async err=>{
      if(err){
        return res.send({
          code:8,
          mes:"md文件上传失败,请刷新后重试"
        })
      }  
      let id = req.body._id
      // 检测文章是否存在
      let doc = await shareDB.findById(id)
      if(!doc){
        return res.send({
          code:17,
          mes:"该文章已被删除，请刷新后重试"
        })
      }
      // 删除旧文件
      doc.cover.forEach(item=>{
        fs.rm(join(__dirname,"../../../static"+item),{recursive:true},err=>{
          if(err) return
        })
      })
      // 更改数据库 删除
      await shareDB.findByIdAndUpdate(id,{
        $pop:{
          cover:-1
        }
      })
      // 更新数据库 添加
      await shareDB.findByIdAndUpdate(id,{
        $push:{
          cover:"/share/cover/"+req.coverFile
        }
      })
      res.send({
        code:0,
        mes:"cover文件更新成功",
      }) 
    }) 
  } catch (error) {
    console.log(error)
    res.send({
      code:5,
      mes:"服务器异常，请稍后再试"
    })
  }
})


// 修改其他 标题 文字
router.post("/updateTit",async(req,res)=>{
  try {
    let {title,des,_id} = req.body
    // 检测文章是否存在
    let doc = await shareDB.findById(_id)
    if(!doc){
      return res.send({
        code:17,
        mes:"该文章已被删除，请稍后再试"
      })
    }
    // 更改数据库
    await shareDB.findByIdAndUpdate(_id,{
      title,
      des,
      mtime:Date.now()
    })
    res.send({
      code:0,
      mes:"文章更新成功"
    })
  } catch (error) {
    res.send({
      code:5,
      mes:"服务器异常，请稍后再试"
    })
  }
})



module.exports = router